#!/bin/bash

# 从Docker容器复制yahboomcar_ros2_ws工作空间到主机的脚本
echo "=== 复制Docker容器内的yahboomcar_ros2_ws工作空间到主机 ==="

# 检查Docker是否可用
if ! docker info > /dev/null 2>&1; then
    echo "错误: Docker不可用，请检查Docker服务"
    exit 1
fi

# 设置目标目录
HOST_WORKSPACE_DIR="$HOME/yahboomcar_ros2_ws"
CONTAINER_WORKSPACE_DIR="/root/yahboomcar_ros2_ws"

echo "目标主机目录: $HOST_WORKSPACE_DIR"
echo "容器源目录: $CONTAINER_WORKSPACE_DIR"

# 启动临时容器来复制文件
echo ""
echo "正在启动临时容器..."
CONTAINER_ID=$(docker run -d yahboomtechnology/ros-foxy-muto:2.9.18 sleep 300)

if [ $? -ne 0 ]; then
    echo "错误: 无法启动容器"
    exit 1
fi

echo "容器ID: $CONTAINER_ID"

# 检查容器内目录是否存在
echo ""
echo "检查容器内工作空间目录..."
if ! docker exec $CONTAINER_ID test -d $CONTAINER_WORKSPACE_DIR; then
    echo "警告: 容器内不存在 $CONTAINER_WORKSPACE_DIR 目录"
    docker stop $CONTAINER_ID > /dev/null
    docker rm $CONTAINER_ID > /dev/null
    exit 1
fi

# 检查容器内目录是否有内容
CONTENT_CHECK=$(docker exec $CONTAINER_ID sh -c "ls -A $CONTAINER_WORKSPACE_DIR 2>/dev/null | wc -l")
if [ "$CONTENT_CHECK" -eq 0 ]; then
    echo "警告: 容器内 $CONTAINER_WORKSPACE_DIR 目录为空"
    docker stop $CONTAINER_ID > /dev/null
    docker rm $CONTAINER_ID > /dev/null
    exit 1
fi

echo "发现容器内工作空间内容，开始复制..."

# 创建主机目录（如果不存在）
mkdir -p "$HOST_WORKSPACE_DIR"

# 复制文件
echo ""
echo "正在复制文件..."
if docker cp $CONTAINER_ID:$CONTAINER_WORKSPACE_DIR/. "$HOST_WORKSPACE_DIR/"; then
    echo "✅ 复制成功！"
    echo ""
    echo "复制的内容:"
    ls -la "$HOST_WORKSPACE_DIR/"
    echo ""
    echo "现在你可以在主机目录 $HOST_WORKSPACE_DIR 中查看和编辑文件了"
    echo "下次启动Docker时，脚本会自动检测到这个目录并进行挂载"
else
    echo "❌ 复制失败"
fi

# 清理临时容器
echo ""
echo "清理临时容器..."
docker stop $CONTAINER_ID > /dev/null
docker rm $CONTAINER_ID > /dev/null

echo "完成！"